如何在pandas DataFrame中存储行的名称和列的索引?

您所在的位置:网站首页 pandas 指定行索引 如何在pandas DataFrame中存储行的名称和列的索引?

如何在pandas DataFrame中存储行的名称和列的索引?

2023-04-23 04:09| 来源: 网络整理| 查看: 265

你可以用以下方法将数据框架导出到csv文件中.to_csv()并用以下方式将其读回.read_csv().我扩展了你已有的代码,如下所示。

#!/usr/bin/env python3 # coding: utf-8 import numpy as np import pandas as pd I = pd.Index(["a", "b", "c", "d"], "rows") C = pd.Index(["col0", "col1", "col2"], "cols") df = pd.DataFrame(data=np.random.rand(4,3), index=I, columns=C) # export DataFrame to csv df.to_csv('out.csv') # set index_col in order to read first column as indices df_in = pd.read_csv('out.csv', index_col=0)

所以DataFrame df看起来是这样的。

col0 col1 col2 a 0.590016 0.834033 0.535310 b 0.421589 0.897302 0.029500 c 0.373580 0.109005 0.239181 d 0.473872 0.075918 0.751628

The csv-file out.csv looks like this:

,col0,col1,col2 a,0.5900160748408918,0.8340332218911729,0.5353103406507513 b,0.42158899389955884,0.8973015040807538,0.029500416731096046 c,0.37357951184145965,0.10900495955642386,0.2391805787788026 d,0.47387186813644167,0.07591794371425187,0.7516279365972057

读回的数据导致了DataFrame df_in,如下所示。

col0 col1 col2 a 0.590016 0.834033 0.535310 b 0.421589 0.897302 0.029500 c 0.373580 0.109005 0.239181 d 0.473872 0.075918 0.751628

因此,df2与df完全相同,这表明出口和所需的进口是按预期工作的。

编辑导出列和索引名称:

df.to_csv('out.csv', index_label=[df.index.name, df.columns.name])

然而,这使得重新导入有点困难,因为列名被添加为一个额外的列。通常情况下,这对多索引数据很有用,但在这里会导致一个额外的空列。

所以我建议只导出索引名称。

# export DataFrame to csv df.to_csv('out.csv', index_label=df.index.name) # set index_col in order to read first column as indices df_in = pd.read_csv('out.csv', index_col=0)

这导致了df_in为。

col0 col1 col2 rows a 0.442467 0.959260 0.626502 b 0.639044 0.989795 0.853002 c 0.576137 0.350260 0.532920 d 0.235698 0.095978 0.194151

我不知道为什么你需要导出索引和列的名称。如果你只是想访问行或列的名称,你可以像这样获得它们的标签。

column_labels = df.columns.get_values() >>> array(['col0', 'col1', 'col2'], dtype=object) index_labels = df.index.get_values() >>> array(['a', 'b', 'c', 'd'], dtype=object)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3